package com.yy.web.pm.billboard.domain.Dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.yy.web.pm.shopPeople.domain.ShopPeople;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.springframework.data.annotation.Transient;

import java.util.List;
import java.util.Objects;

@ApiModel(description = "广告牌信息DTO")
public class BillboardDto extends ShopPeople {
    @Transient
    private String shopId;

    public String getShopId() {
        return shopId;
    }
    //商家广告牌Rif审核状态 0:未通过，1:通过
    @ApiModelProperty(value = "审核是否通过")
    private String shopStateRif;

    // 广告牌到期是否拆除0:处理警告 1 拆除
    @ApiModelProperty(value = "到期是否拆除 0 警告处理 1拆除")
    private String shopState;

    public String getShopState() {
        return shopState;
    }

    public BillboardDto setShopState(String shopState) {
        this.shopState = shopState;
        return this;
    }

    public String getShopStateRif() {
        return shopStateRif;
    }

    public BillboardDto setShopStateRif(String shopStateRif) {
        this.shopStateRif = shopStateRif;
        return this;
    }

    public BillboardDto setShopId(String shopId) {
        this.shopId = shopId;
        return this;
    }

    @ApiModelProperty(value = "广告牌是否变更")
    private String changeJudge;

    @Override
    public String getChangeJudge() {
        return changeJudge;
    }

    @Override
    public BillboardDto setChangeJudge(String changeJudge) {
        this.changeJudge = changeJudge;
        return this;
    }

    @ApiModelProperty(value = "广告牌编号（非数据库字段）", example = "ADV-2023-001")
    @Transient
    private String billboardNumber;

    @ApiModelProperty(value = "广告牌名称（非数据库字段）", example = "主入口广告牌")
    @Transient
    private String billboardName;

    @ApiModelProperty(value = "广告牌有效期开始时间", example = "2023-01-01")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private String billboardStartTime;

    @ApiModelProperty(value = "广告牌有效期结束时间", example = "2023-12-31")
    @JsonFormat(pattern = "yyyy-MM-dd")

    private String billboardEndTime;

    @ApiModelProperty(value = "广告牌检测人", example = "张三")
    private String billboardCheckPeople;

    @ApiModelProperty(value = "广告牌检测时间", example = "2023-06-01 14:30:00")
    private String billboardCheckTime;

    @ApiModelProperty(value = "广告牌检测结果（非数据库字段）", example = "合格")
    @Transient
    private String billboardCheckResult;

    @ApiModelProperty(value = "广告牌图片临时存放数组（URL列表）", example = "[\"http://example.com/image1.jpg\", \"http://example.com/image2.jpg\"]")
    private List<String> image;

    @ApiModelProperty(value = "广告牌检测存放图片（URL或Base64）", example = "http://example.com/check.jpg")
    private String billboardCheckImage;
    // 广告牌检测图片临时存放字段
    private List<String> billboardList;

    public List<String> getBillboardList() {
        return billboardList;
    }

    public BillboardDto setBillboardList(List<String> billboardList) {
        this.billboardList = billboardList;
        return this;
    }

    @ApiModelProperty(value = "店铺图片存放地址（URL列表）", example = "[\"http://example.com/shop1.jpg\", \"http://example.com/shop2.jpg\"]")
    private List<String> shopImage;

    @ApiModelProperty(value = "检测图片（URL列表）", example = "[\"http://example.com/inspect1.jpg\", \"http://example.com/inspect2.jpg\"]")
    private List<String> checkImage;

    @ApiModelProperty(value = "广告牌RFID标签（非数据库字段）", example = "RFID-123456")
    @Transient
    private String billboardRif;

    @ApiModelProperty(value = "广告牌维修人", example = "李四")
    private String repairPeople;

    @ApiModelProperty(value = "广告牌维修人电话", example = "13800138000")
    private String repairPhone;

    @ApiModelProperty(value = "广告牌维修项目", example = "更换灯箱")
    private String repairProject;

    @ApiModelProperty(value = "广告牌维修图片（URL或Base64）", example = "http://example.com/repair.jpg")
    private String repairimage;

    @ApiModelProperty(value = "广告牌维修图片临时存放地址（URL列表）", example = "[\"http://example.com/repair1.jpg\", \"http://example.com/repair2.jpg\"]")
    private List<String> repairImage;

    @ApiModelProperty(value = "广告牌维修备注", example = "已完成灯箱更换")
    private String repairNotes;

    @ApiModelProperty(value = "查询开始时间（非数据库字段）", example = "2023-01-01")
    @Transient
    private String startTime;

    @ApiModelProperty(value = "查询结束时间（非数据库字段）", example = "2023-12-31")
    @Transient
    private String endTime;

    public BillboardDto setRepairimage(String repairimage) {
        this.repairimage = repairimage;
        return this;
    }

    public List<String> getRepairImage() {
        return repairImage;
    }

    public BillboardDto setRepairImage(List<String> repairImage) {
        this.repairImage = repairImage;
        return this;
    }

    public String getStartTime() {
        return startTime;
    }

    public BillboardDto setStartTime(String startTime) {
        this.startTime = startTime;
        return this;
    }

    public String getEndTime() {
        return endTime;
    }

    public BillboardDto setEndTime(String endTime) {
        this.endTime = endTime;
        return this;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this)
                .append("billboardNumber", billboardNumber)
                .append("billboardName", billboardName)
                .append("billboardStartTime", billboardStartTime)
                .append("billboardEndTime", billboardEndTime)
                .append("billboardCheckPeople", billboardCheckPeople)
                .append("billboardCheckTime", billboardCheckTime)
                .append("billboardCheckResult", billboardCheckResult)
                .append("image", image)
                .append("billboardCheckImage", billboardCheckImage)
                .append("shopImage", shopImage)
                .append("checkImage", checkImage)
                .append("billboardRif", billboardRif)
                .append("repairPeople", repairPeople)
                .append("repairPhone", repairPhone)
                .append("repairProject", repairProject)
                .append("repairimage", repairimage)
                .append("repairNotes", repairNotes)
                .toString();
    }

    public String getRepairPeople() {
        return repairPeople;
    }

    public BillboardDto setRepairPeople(String repairPeople) {
        this.repairPeople = repairPeople;
        return this;
    }

    public String getRepairPhone() {
        return repairPhone;
    }

    public BillboardDto setRepairPhone(String repairPhone) {
        this.repairPhone = repairPhone;
        return this;
    }

    public String getRepairProject() {
        return repairProject;
    }

    public BillboardDto setRepairProject(String repairProject) {
        this.repairProject = repairProject;
        return this;
    }

    public String getRepairimage() {
        return repairimage;
    }

    public String getRepairNotes() {
        return repairNotes;
    }

    public BillboardDto setRepairNotes(String repairNotes) {
        this.repairNotes = repairNotes;
        return this;
    }

    public BillboardDto() {
    }


    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof BillboardDto)) return false;
        BillboardDto that = (BillboardDto) o;
        return Objects.equals(billboardNumber, that.billboardNumber) && Objects.equals(billboardName, that.billboardName) && Objects.equals(billboardStartTime, that.billboardStartTime) && Objects.equals(billboardEndTime, that.billboardEndTime) && Objects.equals(billboardCheckPeople, that.billboardCheckPeople) && Objects.equals(billboardCheckTime, that.billboardCheckTime) && Objects.equals(billboardCheckResult, that.billboardCheckResult) && Objects.equals(image, that.image) && Objects.equals(billboardCheckImage, that.billboardCheckImage) && Objects.equals(shopImage, that.shopImage) && Objects.equals(checkImage, that.checkImage) && Objects.equals(billboardRif, that.billboardRif);
    }

    @Override
    public int hashCode() {
        return Objects.hash(billboardNumber, billboardName, billboardStartTime, billboardEndTime, billboardCheckPeople, billboardCheckTime, billboardCheckResult, image, billboardCheckImage, shopImage, checkImage, billboardRif);
    }

    public String getBillboardNumber() {
        return billboardNumber;
    }

    public BillboardDto setBillboardNumber(String billboardNumber) {
        this.billboardNumber = billboardNumber;
        return this;
    }

    public String getBillboardName() {
        return billboardName;
    }

    public BillboardDto setBillboardName(String billboardName) {
        this.billboardName = billboardName;
        return this;
    }

    public String getBillboardStartTime() {
        return billboardStartTime;
    }

    public BillboardDto setBillboardStartTime(String billboardStartTime) {
        this.billboardStartTime = billboardStartTime;
        return this;
    }

    public String getBillboardEndTime() {
        return billboardEndTime;
    }

    public BillboardDto setBillboardEndTime(String billboardEndTime) {
        this.billboardEndTime = billboardEndTime;
        return this;
    }

    public String getBillboardCheckPeople() {
        return billboardCheckPeople;
    }

    public BillboardDto setBillboardCheckPeople(String billboardCheckPeople) {
        this.billboardCheckPeople = billboardCheckPeople;
        return this;
    }

    public String getBillboardCheckTime() {
        return billboardCheckTime;
    }

    public BillboardDto setBillboardCheckTime(String billboardCheckTime) {
        this.billboardCheckTime = billboardCheckTime;
        return this;
    }

    public String getBillboardCheckResult() {
        return billboardCheckResult;
    }

    public BillboardDto setBillboardCheckResult(String billboardCheckResult) {
        this.billboardCheckResult = billboardCheckResult;
        return this;
    }

    public List<String> getImage() {
        return image;
    }

    public BillboardDto setImage(List<String> image) {
        this.image = image;
        return this;
    }

    public String getBillboardCheckImage() {
        return billboardCheckImage;
    }

    public BillboardDto setBillboardCheckImage(String billboardCheckImage) {
        this.billboardCheckImage = billboardCheckImage;
        return this;
    }

    public List<String> getShopImage() {
        return shopImage;
    }

    public BillboardDto setShopImage(List<String> shopImage) {
        this.shopImage = shopImage;
        return this;
    }

    public List<String> getCheckImage() {
        return checkImage;
    }

    public BillboardDto setCheckImage(List<String> checkImage) {
        this.checkImage = checkImage;
        return this;
    }

    public String getBillboardRif() {
        return billboardRif;
    }

    public BillboardDto setBillboardRif(String billboardRif) {
        this.billboardRif = billboardRif;
        return this;
    }
}
